95bff04b4cd247bf8c29014e971e6ce6d70689ca,src/org/rascalmpl/library/experiments/Compiler/RVM/Interpreter/BytecodeGenerator.java,BytecodeGenerator,emitInlineCallMuPrimNGeneral,#MuPrimitive#number#,1479
Before Change
}
private void emitInlineCallMuPrimNGeneral(MuPrimitive muprim, int arity) {
mv.visitFieldInsn(GETSTATIC, Type.getInternalName(MuPrimitive.class), muprim.name(),
Type.getDescriptor(MuPrimitive.class));
mv.visitVarInsn(ALOAD, STACK); // stack
mv.visitVarInsn(ILOAD, SP); // sp
emitIntValue(arity); // arity
mv.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(MuPrimitive.class), "executeN", Type.getMethodDescriptor(INT_TYPE, OBJECT_A_TYPE, INT_TYPE, INT_TYPE),false);
// sp = callMuPrimN(stack, sp, arity)
mv.visitInsn(ICONST_M1);
mv.visitInsn(IADD); // sp--
After Change
emitIntValue(arity); // arity
mv.visitInvokeDynamicInsn(muprim.name(),
Type.getMethodDescriptor(INT_TYPE, OBJECT_A_TYPE, INT_TYPE, INT_TYPE), bootstrapMuPrimitive());
// mv.visitMethodInsn(INVOKEVIRTUAL, Type.getInternalName(MuPrimitive.class), "executeN", Type.getMethodDescriptor(INT_TYPE, OBJECT_A_TYPE, INT_TYPE, INT_TYPE),false);
// sp = callMuPrimN(stack, sp, arity)